home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / newlooklib.lha / newlook / createcheckbox.c < prev    next >
C/C++ Source or Header  |  1993-11-11  |  3KB  |  93 lines

  1. /*
  2.  *  CREATECHECKBOX.C
  3.  */
  4.  
  5. #include "newlook.h"
  6.  
  7. extern void CopyMem(APTR,APTR,ULONG);
  8.  
  9. static SHORT hook_pairs[2*10]= {
  10.   7,5,    /*.......................*/
  11.   10,8,   /*................***....*/
  12.   12,8,   /*...............**......*/
  13.   18,2,   /*..............**.......*/
  14.   19,2,   /*......***....**........*/
  15.   17,2,   /*.......***..**.........*/
  16.   11,8,   /*........*****..........*/
  17.   8,5,    /*.........***...........*/
  18.   9,5,    /*.......................*/
  19.   11,7    /*.......................*/
  20. };
  21.  
  22. struct Gadget *CreateCheckbox(x,y,pn,id)
  23. SHORT x,y;
  24. BOOL pn;
  25. USHORT id;
  26. {
  27.   struct Gadget *g;
  28.   struct Border *b0, *b1, *c0, *c1;
  29.  
  30.   ULONG UserHandle= SetNewLookHandle(PRIVATE_HANDLE);
  31.  
  32.   if(g= (struct Gadget *)SmartAllocate(GADGETSIZE))
  33.   {
  34.     if(b0= CreateBorder(0,0,CHECKBOX_WIDTH,CHECKBOX_HEIGHT,FALSE))
  35.     {
  36.       if(b1= (struct Border *)SmartAllocate(BORDERSIZE))
  37.       {
  38.         if(c0= (struct Border *)SmartAllocate(BORDERSIZE))
  39.         {
  40.           if(c1= (struct Border *)SmartAllocate(BORDERSIZE))
  41.           {
  42.             CopyMem((APTR)b0, (APTR)b1, BORDERSIZE);
  43.  
  44.             c0->LeftEdge     = 0;
  45.             c0->TopEdge      = 0;
  46.             c0->FrontPen     = 0;
  47.             c0->BackPen      = 0;
  48.             c0->DrawMode     = JAM2;
  49.             c0->Count        = 10;
  50.             c0->XY           = &hook_pairs[0];
  51.             c0->NextBorder   = b0;
  52.  
  53.             c1->LeftEdge     = 0;
  54.             c1->TopEdge      = 0;
  55.             c1->FrontPen     = 1;
  56.             c1->BackPen      = 0;
  57.             c1->DrawMode     = JAM1;
  58.             c1->Count        = 10;
  59.             c1->XY           = &hook_pairs[0];
  60.             c1->NextBorder   = b1;
  61.  
  62.             g->NextGadget    = (struct Gadget *)NULL;
  63.             g->LeftEdge      = x;
  64.             g->TopEdge       = y;
  65.             g->Width         = CHECKBOX_WIDTH;
  66.             g->Height        = CHECKBOX_HEIGHT;
  67.             g->Flags         = pn ? GADGHIMAGE|SELECTED : GADGHIMAGE;
  68.             g->Activation    = GADGIMMEDIATE|RELVERIFY|TOGGLESELECT;
  69.             g->GadgetType    = BOOLGADGET;
  70.             g->GadgetRender  = (APTR)c0;
  71.             g->SelectRender  = (APTR)c1;
  72.             g->GadgetText    = (struct IntuiText *)NULL;
  73.             g->MutualExclude = (LONG)0L;
  74.             g->SpecialInfo   = (APTR)NULL;
  75.             g->GadgetID      = id;
  76.             g->UserData      = (APTR)NULL;
  77.  
  78.             MakePrivateHandlePublic(UserHandle);
  79.             return g;
  80.           }
  81.         }
  82.       }
  83.     }
  84.   }
  85.  
  86.   if(UserHandle != PRIVATE_HANDLE)
  87.   {
  88.     SmartFreeAll(PRIVATE_HANDLE);
  89.     (void)SetNewLookHandle(UserHandle);
  90.   }
  91.   return (struct Gadget *)NULL;
  92. }
  93.